# openai_llm.py（修正为同步调用）
import os
from langchain.chat_models import ChatOpenAI
import requests
import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

API_KEY = os.getenv("DASHSCOPE_API_KEY")

if not API_KEY:
    logger.error("DASHSCOPE_API_KEY 未设置！")

class ResumeLLMRenderer:
    def __init__(self):
        self.llm = ChatOpenAI(
            api_key=os.getenv('DASHSCOPE_API_KEY'),
            base_url='https://dashscope.aliyuncs.com/compatible-mode/v1',
            model_name="qwen-turbo",
            temperature=0.3
        )

    def _call_qianwen(self, prompt):
        """
        封装调用大模型的方法
        :param prompt: 输入的提示文本
        :return: 大模型返回的结果
        """
        try:
            response = self.llm.invoke(prompt)
            return response.content
        except Exception as e:
            print(f"调用大模型失败: {str(e)}")
            return ""


    def render_for_hr(self, job_info, resume_data, interview_info):
        """
        升级后：结合职位、简历、interview信息生成HR报告
        :param job_info: 职位信息（来自Jobposting）
        :param resume_data: 简历结构化信息（来自ResumeParseData）
        :param interview_info: interview模型数据（如ai_match_score、match_points等）
        """
        # 整合三方信息到Prompt
        prompt = f"""
        你是专业招聘HR助手，基于以下全量信息生成初筛报告：
        【职位信息】
        - 岗位名称：{job_info.get('title', '未知')}
        - 技能要求：{job_info.get('skills', '无')}
        - 学历要求：{job_info.get('education', '无')}
        - 经验要求：{job_info.get('working_exp', '无')}

        【简历信息】
        - 候选人学历：{resume_data.education}
        - 候选人技能：{resume_data.skills}
        - 工作经历：{resume_data.work_experience}

        【AI初筛结果】
        - 检索匹配分：{interview_info.get('ai_match_score', 0)}
        - 综合评分：{interview_info.get('ai_search_score', 0)}
        - 匹配点：{', '.join(interview_info.get('ai_match_points', []))}
        - 风险点：{', '.join(interview_info.get('ai_risk_points', []))}

        【任务要求】
        1. 分析候选人与岗位的整体匹配度（突出优势与风险）
        2. 给出是否进入二面的建议及3个考察重点
        3. 语言简洁专业，100字左右
        """
        return self._call_qianwen(prompt).strip()

    def render_for_user(self, job_info, resume_data, interview_info):
        """升级后：结合三方信息生成求职者报告"""
        prompt = f"""
        你是职业规划导师，基于以下信息给求职者反馈：
        【申请岗位】{job_info.get('title', '未知')}
        【你的简历亮点】
        - 学历：{resume_data.education}
        - 技能：{resume_data.skills}
        - 相关经历：{resume_data.work_experience[:2]}  # 取前2条

        【初筛评估】
        - 综合评分：{interview_info.get('ai_search_score', 0)}/10
        - 匹配点：{', '.join(interview_info.get('ai_match_points', []))}
        - 待提升：{', '.join(interview_info.get('ai_risk_points', []))}

        【任务要求】
        1. 先肯定优势，用鼓励语气
        2. 针对"待提升"给出具体改进建议（如学习资源、项目经验补充）
        3. 100字左右，亲切易懂
        """
        return self._call_qianwen(prompt).strip()


llm = ResumeLLMRenderer()